package model

import (
	"manager/model/entity"
)

// FirstFaultTypeCreateRequest 创建现场数据
type FirstFaultTypeCreateRequest struct {
	Name string `json:"name"`

	Desc string `json:"desc"`

	HasChild bool `json:"has_child"`

	UpdatedAt int64 `json:"updated_at"`
}

// FirstFaultTypeUpdateRequest 更新现场数据
type FirstFaultTypeUpdateRequest struct {
	Id int64 `json:"id"`

	Name *string `json:"name"`

	Desc *string `json:"desc"`

	HasChild *bool `json:"has_child"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// FirstFaultTypeListRequest 列表现场数据
type FirstFaultTypeListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	Ids []int64 `json:"ids"`

	Name *string `json:"name"`

	Desc *string `json:"desc"`

	HasChild *bool `json:"has_child"`

	UpdatedAt *int64 `json:"updated_at"`
}

// FirstFaultTypeListResponse 列表回包数据
type FirstFaultTypeListResponse struct {
	Total int                   `json:"total"`
	List  []*FirstFaultTypeInfo `json:"list"`
}

// FirstFaultTypeInfoRequest 列表现场数据
type FirstFaultTypeInfoRequest struct {
	Id int64 `json:"id"`

	Name *string `json:"name"`

	Desc *string `json:"desc"`

	HasChild *bool `json:"has_child"`

	UpdatedAt *int64 `json:"updated_at"`
}

// FirstFaultTypeInfo 详细数据
type FirstFaultTypeInfo struct {
	Id int64 `json:"id"`

	Name string `json:"name"`

	Desc string `json:"desc"`

	HasChild bool `json:"has_child"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// FirstFaultTypeDeleteRequest 删除现场数据
type FirstFaultTypeDeleteRequest struct {
	Id int64 `json:"id"`
}

// FirstFaultTypesEntityToDto entity数据转换
func FirstFaultTypesEntityToDto(firstFaultTypes []*entity.FirstFaultType) []*FirstFaultTypeInfo {
	out := make([]*FirstFaultTypeInfo, 0, len(firstFaultTypes))
	for _, c := range firstFaultTypes {
		out = append(out, FirstFaultTypeEntityToDto(c))
	}
	return out
}

// FirstFaultTypeEntityToDto entity数据转换
func FirstFaultTypeEntityToDto(e *entity.FirstFaultType) *FirstFaultTypeInfo {
	return &FirstFaultTypeInfo{

		Id: e.Id,

		Name: e.Name,

		Desc: e.Desc,

		HasChild: e.HasChild,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
